const path = require("path");
const CompressionPlugin = require("compression-webpack-plugin")

function resolve(dir) {
    return path.join(__dirname, dir); //path.join(__dirname)设置绝对路径
}

module.exports = {
    chainWebpack: (config) => {
        config.resolve.alias
            //set第一个参数：设置的别名，第二个参数：设置的路径
            .set("@", resolve("./src"))
            .set("components", resolve("./src/components"))
            .set("assets", resolve("./src/assets"))
            .set("views", resolve("./src/views"))
            .set("network", resolve("./src/network"));
        //注意 store 和 router 没必要配置
    },
    devServer: {
        proxy: {
            '/api': { // 请求的代称，写在Axios里的BaseUrl
                target: 'http://8.129.29.84:8082', // 真实请求URl
                ws: true,
                changeOrigin: true, // 允许跨域
                pathRewrite: { //替换，通配/api的替换成对应字符
                    //     /* 重写路径，当我们在浏览器中看到请求的地址为：http://localhost:8080/api/core/getData/userInfo 时
                    //       实际上访问的地址是：http://localhost:8088/spring/core/getData/userInfo,因为重写了 /api
                    //      */
                    '^/api': '' //当你的接口中没有/api字眼时，采用这种，直接替换成空即可
                    //     '^/api': '/api'   //当你的接口中刚好有/api 时，采用这种方式
                }
            }
        }
    },
    //docker run --name nginx01 -v /root/nginx_pro/content:/usr/share/nginx/html:ro -v /root/nginx_pro/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8080:80 -d nginx:stable
productionSourceMap: false,
    configureWebpack: {
        externals: {
            'vue': 'Vue',
            'vue-router': 'VueRouter',
            'axios': 'axios',
            'element-ui': 'Element',
            'vue-lazyload': 'VueLazyload'
        },
        plugins: [
            new CompressionPlugin({
                test: /\.(js|css)(\?.*)?$/i,//需要压缩的文件正则
                threshold: 10240,//文件大小大于这个值时启用压缩
                deleteOriginalAssets: false//压缩后保留原文件
            })
        ]
    },
    lintOnSave: false
}